package com.ben.multiple.util;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * @author ben
 * @date 2019/7/7
 */
public interface MybatisUtils {

    /**
     * 处理 mybatis 结果集List 中元素的 LinkedHashMap，对象转换出错的问题；提前处理 List；若不需要对查询的结果进一步处理，则不需要使用此方法
     * List<LinkedHashMap>  -->  List<T>
     *
     * @param list 实体类中的 列表    List<LinkedHashMap>
     * @param type 列表中的元素类型
     * @param <T>  元素类型
     * @return List<T>
     */
    @SuppressWarnings("unchecked")
    static <T> List<T> convertListJsonToObject(List list, Class<? extends T> type) {
        List<T> result = new ArrayList<>();
        if (list == null || type == null) {
            return result;
        }
        for (Object obj : list) {
            if (obj instanceof LinkedHashMap) {
                LinkedHashMap<String, Object> map = (LinkedHashMap) obj;

                //对指定类型的转换
                /*Object value = map.get("key");
                if (value != null) {
                    map.replace("key", Double.parseDouble(String.valueOf(value)));
                }*/

                result.add(BeanMapper.map(map, LinkedHashMap.class, type));
            }
        }
        return result.size() == 0 ? list : result;
    }
}
